Referring to FIG. 1, a computer simulation 10 of an IC involves measuring inputs and outputs at various signal points within the IC to simulate operation of the IC. In the example of FIG. 1, there are four input points 22, 24, 26 and 28 and three output points 32, 34 and 36 schematically representing a specific portion of an IC. During the simulation, data is read from the designated points and the data is recorded in relationship to time. Data recorded in relation to time is referred to as time series data. Referring to FIG. 2, in computer simulations, time series data 40 represents electrical waveforms and typically consists of a variable name 42, a time value 44, and a variable value 46. The variable name corresponds to the point within the simulation that is being monitored, the time value represents the time that the sample was taken from the named variable, and the variable value represents the result of the monitoring at the specific named variable at the specific time.
FIG. 3 is a depiction of an example block of time series data 50 generated from the simulation 10 of FIG. 1 taken over nine time periods, The four input points or input variables 22-28 and the three output points or output variables 32-36 are identified at the top row 52 of the matrix, and the time values t0 through t8 are identified at the leftmost column 54 of the matrix. The variable values are identified at the intersection of each row and column. In some cases the variable value is representative of a transition from one state to another, with the transition being represented by the change from "0" to "1" or "1" to "0".
In an actual computer simulation, there may be thousands, if not millions, of variables being measured at rates that are small fractions of a second. The net result is that the amount of data generated by computer simulations is extremely large, for example, in excess of ten thousand megabytes per simulation.
Storing such large amounts of simulation data in their entirety is inefficient and often impractical. In order to more efficiently store and manage such large quantities of data, techniques have been developed to compress simulation data into smaller quantities. One prior art technique for compressing simulation data is disclosed in U.S. Pat. No. 5,345,450, entitled "Method of Compressing and Decompressing Simulation Data for Generating a Test Program for Testing a Logic Device," issued to Saw et al. (hereinafter Saw). Saw discloses a technique that reduces the number of input values in a sequence of input values when the sequence includes a series of redundant input values that are expected to generate the same output values. For example, referring to FIG. 3, Saw identifies the redundant input values that are represented at times t4 through t7 and eliminates all but the first input value at t4. Saw then encodes a group of control bits associated with the remaining input value, with information indicating the number of redundant input values being eliminated. The smaller set of input values produces a smaller set of output values and a smaller overall data set for the simulation results. The results can then be expanded to recover the eliminated data.
Although Saw works well for its intended purpose, as simulation complexity continues to grow, there is still a need for improved compression techniques that increase the amount of simulation data that can be stored in a limited storage space.